controlP5

## Interface CallbackListener

-     public interface CallbackListener

  Use a CallbackListener to listen for controller related actions such as pressed, released, etc. Callbacks cn be added via the ControlP5.addCallback() methods.

  See Also:
    `ControlP5.addCallback(CallbackListener)`
  +Example
    `

        /**
         * ControlP5 Callback
         *
         * The following example demonstrates the CallbackListener and CallbackEvent.
         * Here additional information about each available slider will be show when
         * hovering the controller with the mouse. The info will fade out when leaving
         * the controller.
         *
         * When hovering a controller, the mouse pointer will change as well.
         *
         * find a list of public methods available for the CallbackEvent Controller
         * at the bottom of this sketch.
         *
         * by Andreas Schlegel, 2012
         * www.sojamo.de/libraries/controlp5
         *
         */

        import controlP5.*;

        ControlP5 cp5;
        Slider s1, s2;
        Info info;
        CallbackListener cb;

        void setup() {
          size(800, 400);

          cp5 = new ControlP5(this);

          // create a new instance of class Info
          // info will be used to display a controller's information and
          // will fade in when a CallbackEvent is invoked.
          info = new Info();

          // add 2 sliders
          s1 = cp5.addSlider("hello")
                  .setRange(0, 100)
                  .setValue(50)
                  .setPosition(40, 40)
                  .setSize(100, 20);

          s2 = cp5.addSlider("world")
                  .setRange(0, 100)
                  .setValue(10)
                  .setPosition(40, 70)
                  .setSize(100, 20);

          // the following CallbackListener will listen to any controlP5
          // action such as enter, leave, pressed, released, releasedoutside, broadcast
          // see static variables starting with ACTION_ inside class controlP5.ControlP5Constants

          cb = new CallbackListener() {
            public void controlEvent(CallbackEvent theEvent) {
              switch(theEvent.getAction()) {
                case(ControlP5.ACTION_ENTER):
                info.n = 1;
                info.label.setText(theEvent.getController().getInfo());
                cursor(HAND);
                break;
                case(ControlP5.ACTION_LEAVE):
                case(ControlP5.ACTION_RELEASEDOUTSIDE):
                info.n = 0;
                cursor(ARROW);
                break;
              }
            }
          };

          // add the above callback to controlP5
          cp5.addCallback(cb);

          // add another callback to slider s1, callback event will only be invoked for this
          // particular controller.
          s1.addCallback(new CallbackListener() {
            public void controlEvent(CallbackEvent theEvent) {
              if (theEvent.getAction()==ControlP5.ACTION_BROADCAST) {
                s2.setValue(s2.getMax() - s1.getValue());
              }
            }
          }
          );
        }

        void draw() {
          background(0);
          info.update();
        }

        void controlEvent(ControlEvent theEvent) {
          println("Got a ControlEvent for "+theEvent.name()+" = "+theEvent.value());
          info.label.setText(theEvent.getController().getInfo());
        }

        void keyPressed() {
          // uncomment the line below to remove callback cb from controlP5
          // when a key is pressed.
          //controlP5.removeCallback(cb);
        }

        // controlEvent(CallbackEvent) is called whenever a callback
        // has been triggered. controlEvent(CallbackEvent) is detected by
        // controlP5 automatically.
        void controlEvent(CallbackEvent theEvent) {
          if (theEvent.getController().equals(s2)) {
            switch(theEvent.getAction()) {
              case(ControlP5.ACTION_ENTER):
              println("Action:ENTER");
              break;
              case(ControlP5.ACTION_LEAVE):
              println("Action:LEAVE");
              break;
              case(ControlP5.ACTION_PRESSED):
              println("Action:PRESSED");
              break;
              case(ControlP5.ACTION_RELEASED):
              println("Action:RELEASED");
              break;
              case(ControlP5.ACTION_RELEASEDOUTSIDE):
              println("Action:RELEASED OUTSIDE");
              break;
              case(ControlP5.ACTION_BROADCAST):
              println("Action:BROADCAST");
              break;
            }
          }
        }

        class Info {
          float a;
          float n = 0;
          String txt = "";
          Textarea label;

          Info() {
            label = cp5.addTextarea("Hello\nWorld")
                       .setSize(200,200)
                       .setPosition(300,40)
                       .setColor(color(255))
                       .setColorBackground(color(100,0))
                       .setLineHeight(12);

          }

          void update() {
            a += (n-a)*0.1;
            label.setColorBackground(color(100,255*a));
          }
        }

        /*
        a list of all methods available for the CallbackEvent Controller
         use ControlP5.printPublicMethodsFor(CallbackEvent.class);
         to print the following list into the console.

         You can find further details about class CallbackEvent in the javadoc.

         Format:
         ClassName : returnType methodName(parameter type)

         controlP5.CallbackEvent : Controller getController()
         controlP5.CallbackEvent : int getAction()
         java.lang.Object : String toString()
         java.lang.Object : boolean equals(Object)

         */

    `

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `controlEvent(CallbackEvent theEvent)`

- - ### Method Detail

    - #### controlEvent

          void controlEvent(CallbackEvent theEvent)

processing library controlP5 by Andreas Schlegel. (c) 2006-2015